﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Camping_Project_WEB.Models;

namespace Camping_Project_WEB.Controllers
{
    public class ReservationController : Controller
    {
        public Camping_BDD _bdd = new Camping_BDD();
        public ASPNETBDD _asp = new ASPNETBDD();
        public Guid uniqueID;
        public bool emplacement;



        public ActionResult Reservation(ReservationModels model)
        {

            float prixAdulte = 0, prixAnimal = 0, prixElec = 0, prixEnf = 0, prixNuit = 0, prixVehic = 0, prixTotal = 0;
                //Recherche de l'ID correspondant a la personne connectée sur la session
                var query =         from user in _asp.aspnet_Users
                                    where user.UserName == User.Identity.Name
                                    select user.UserId;


                
                //Recupération de l'id unique
           
                foreach (var r in query)
                {
                    uniqueID = r;
                }


                int IDClient = (from client in _bdd.Client
                               where client.IDuser == uniqueID
                               select client.IDClient).First();


                //Recuperation des tarifs

           var tarif =
                    from tar in _bdd.Tarif
                    select new
                    {
                        tar.PrixAdulte,tar.PrixAnimal,tar.PrixElectricite,tar.PrixEnfant,tar.PrixNuit,tar.PrixVehicule
                    };

           foreach (var r in tarif)
           {
               prixAdulte = (float)r.PrixAdulte * (model.nbAdultes);
               prixAnimal = (float)r.PrixAnimal * (model.nbAnimaux);
               prixEnf =    (float)r.PrixEnfant * (model.nbEnfants);
               prixVehic =  (float)r.PrixVehicule * (model.nbVehicules);

               if (model.electricite == true)
               {
                   prixElec = (float)r.PrixElectricite;
               }
               else
               {
                   prixElec = 0;
               }


               //Calcul prix de la nuit
               if (model.booldateDef)
               {
                   //dateDepartDef = DateTime.Parse(departDef.Text);
                   //dateArriveee = DateTime.Parse(dateArrivee.Text);
                   TimeSpan diff = model.dateFinDef - model.dateDebut;
                   int diffInt = Convert.ToInt32(diff.TotalDays);
                   prixNuit = (float)r.PrixNuit * diffInt;
               }
               else
               {
                   prixNuit = 0;
               }


               //Calcul prix total
               if (model.booldateDef)
               {
                   prixTotal = prixNuit + prixAdulte + prixEnf + prixAnimal + prixVehic + prixElec;
               }
               else
               {
                   prixTotal = 0;
               }

           }

           if (model.tente == true)
           {
               emplacement = false;
           }
           else
           {
               emplacement = true;
           }

           //ViewData["mymessage"] = prixAdulte + " " + prixEnf + " " + prixVehic;
            try
            {
                //User.Identity.Name;
                Reservation res = new Reservation
                {
                    DateDebut = model.dateDebut,
                    DateFinApprox = model.dateFinApprox,
                    DateFinDef = model.dateFinDef,
                    TypeEmp = emplacement,
                    NbAdultes = model.nbAdultes,
                    NbEnfants = model.nbEnfants,
                    NbAnimaux = model.nbAnimaux,
                    Electricite = model.electricite,
                    IDEmplacement = 1,//model.emplacement,
                    IDClient = IDClient,
                    Valide = false,

                    //A remplir Via BDD Tarifs

                    PrixNuit = prixNuit,
                    PrixAdulte = prixAdulte,
                    PrixAnimal = prixAnimal,
                    PrixTotal = prixTotal,
                    PrixElectricite = prixElec,
                    PrixVehicule = prixVehic,
                    PrixEnfant = prixEnf,
                    PayementEffectue = false,
                    //ID Statique désignant le site internet en tant que créateur de la réservation (Peut etre modifié lors de la confirmation par l'employé)
                    IDEmploye = 1000

                };

                _bdd.Reservation.AddObject(res);
                _bdd.SaveChanges();
                return RedirectToAction("ResSuccess", "Reservation");
            }
            catch
            {
                return View();
            }
            
        }

        public ActionResult ResSuccess()
        {
            return View();
        }

    }
}
